home *** CD-ROM | disk | FTP | other *** search
/ ...taking it to the Macs! / ...taking it to the Macs!.iso / Extras / ActiveX Mac SDK / ActiveX SDK / Container Common / download.h < prev    next >
Text File  |  1997-01-03  |  3KB  |  89 lines

  1. //
  2. //  DOWNLOAD.H
  3. //
  4. //  Copyright (C) Microsoft Corporation, 1996
  5. //
  6.  
  7. class CXSite;                            //  Forward reference
  8. class CContainer;                        //  Forward reference
  9.  
  10. typedef struct _QUEUED_DOWNLOAD {
  11.     CXSite *SiteP;
  12.     struct _QUEUED_DOWNLOAD *NextP;
  13. }   QUEUED_DOWNLOAD;
  14.  
  15. class CCodeDownload:
  16.     public IBindStatusCallback
  17. {
  18. private:
  19.     long            mRefCount;            // reference count of object
  20.     LPVOID            mEnumKeyP;
  21.     CXSite *        mSiteP;
  22.     QUEUED_DOWNLOAD *mQueueP;
  23.     ErrorCode        mDownloadResult;
  24.     unsigned char*    mStreamDataP;
  25.     unsigned long    mStreamLength;
  26.     Boolean            mProcessINF;
  27.     LPOLESTR        mEnd;
  28.     LPOLESTR        mCurrent;
  29.     LPOLESTR        mLastSectionMatch;
  30.  
  31. public:
  32.     CCodeDownload();
  33.     ~CCodeDownload();
  34.     void QueueDownload(CXSite *inSiteP);
  35.     void InfAvailable(BOOL fSuccess);
  36.     void CodeAvailable(BOOL fSuccess);
  37.  
  38. private:
  39.     void StartNextDownload(void);
  40.     BOOL StartDownload(CXSite *inSiteP);
  41.     void ProcessNextSection(void);
  42.     BOOL OpenStream(CXSite *inSiteP, Boolean IsINFFile, LPOLESTR URLString);
  43.  
  44.     //  *** IUnknown methods ***
  45.     STDMETHOD(QueryInterface)(REFIID RefID, void** Obj);
  46.     STDMETHOD_(ULONG, AddRef)(void);
  47.     STDMETHOD_(ULONG, Release)(void);
  48.  
  49.     //  *** IBindStatusCallback methods ***
  50.     STDMETHOD(OnStartBinding)(DWORD BSCOption, IBinding* Binding);
  51.     STDMETHOD(GetPriority)(LONG* Priority);
  52.     STDMETHOD(OnLowResource)(DWORD reserved);
  53.     STDMETHOD(OnProgress)(ULONG Progress, ULONG ProgressMax, ULONG StatusCode, const char* StatusText);
  54.     STDMETHOD(OnStopBinding)(HRESULT Result, const char* Error);
  55.     STDMETHOD(GetBindInfo)(LPDWORD BINDF, BINDINFO* BindInfo);
  56.     STDMETHOD(OnDataAvailable)(DWORD BSCF, DWORD Size, FORMATETC* FormatEtc, STGMEDIUM* StgMedium);
  57.     STDMETHOD(OnObjectAvailable)(REFIID RefID, IUnknown* Unknown);
  58.  
  59.  
  60. public:
  61.     BOOL GetProfileString(LPOLESTR pszSection, LPOLESTR pszKey, LPOLESTR
  62.         pszBuffer, UINT BufferSize);
  63.     BOOL GetFirstKey(LPOLESTR pszSection, LPVOID *pvEnumKey, LPOLESTR pszBuffer,
  64.         UINT BufferSize);
  65.     BOOL GetNextKey(LPVOID *pvEnumKey, LPOLESTR pszBuffer, UINT BufferSize);
  66.  
  67. private: 
  68.     void SkipWhitespace(void);
  69.     void SkipToNextLine(void);
  70.     BOOL FindSection(LPOLESTR pszSection);
  71.     BOOL GetKeyCommon(LPVOID *pvEnumKey, LPOLESTR pszBuffer, UINT BufferSize);
  72. };
  73.  
  74.  
  75. typedef enum {
  76.     FILEXTN_NONE,
  77.     FILEXTN_UNKNOWN,
  78.     FILEXTN_HQX,
  79.     FILEXTN_INF
  80. }   FILEXTN;
  81.  
  82. BOOL FindActiveXCacheFolder(short *foundvRefNum, long *foundDirID);
  83. BOOL FindDownloadFolder(short *foundvRefNum, long *foundDirID, BOOL
  84.     fExtensionsFolder);
  85. FILEXTN GetFileTypeFromExtension(LPOLESTR pszURL);
  86. BOOL GetVersionFromFile(FSSpec *spec, LPDWORD pdwVersion);
  87. BOOL GetVersionFromURL(LPOLESTR pszURL, LPDWORD pdwVersion);
  88. BOOL CheckCLSIDVersion(REFCLSID rclsid, DWORD dwMinimumVersion);
  89.